package com.hzqy.web.ac;

import com.alibaba.fastjson.JSONObject;
import com.hzqy.commons.service.utils.OrderXmlUtils;
import com.hzqy.commons.utils.SystemConfigUtils;
import com.hzqy.persistence.dao.commons.CommonsDao;
import com.hzqy.service.hqjc.HqjcServiceBean;
import com.hzqy.web.login.ImgType;
import com.hzqy.web.login.SessionKey;
import com.hzqy.web.vo.*;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.*;

@Controller
@RequestMapping("/")
public class HqjcAction {
	protected final Logger LOG = LoggerFactory.getLogger(getClass());
	private static String CatalogListGdResult;
	private static String CatalogListGdResultV20;
	@Resource
	private HqjcServiceBean hqjcServiceBean;
	@Resource
	private CommonsDao commonsDao;
	/**
	 * 拿到某个分类的信息
	 * @param f_catalog_id
	 * @return
	 */
	@RequestMapping("/catalog_info")
	@ResponseBody
	public Object selectCatalog(int f_catalog_id) {
		CmCatalogVo catalog= hqjcServiceBean.selectCatalog(f_catalog_id);
		return catalog;
	}

	/**
	 * 根据父级catalogId得到父级目录下的一级子目录总数
	 * @param f_catalog_id
	 * @return
	 */
	@RequestMapping("/catalog_info_list_by_parent_catalogid_count")
	@ResponseBody
	public Object catalog_catalogInfoListBycatalogIdCount(HttpSession session,int f_catalog_id,CmCatalogVo cmCatelogVo) {
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		int f_po_id=0;
		if(orgVo!=null && cmCatelogVo.getF_is_public()==0){
			f_po_id=orgVo.getF_po_id();
		}
		int count= hqjcServiceBean.selectCatalogInfoListByParentCatalogIdCount(f_catalog_id,f_po_id);
		Map<String, Integer> map=new HashMap<String, Integer>();
		map.put("count", count);
		return map;
	}
	/**
	 * 根据父级catalogId得到父级目录下的一级子目录信息(注意只能拿到下一级，不可多级，多级需要多次查询)
	 * @param f_catalog_id
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/catalog_info_list_by_parent_catalogid")
	@ResponseBody
	public Object catalog_catalogInfoListBycatalogId(HttpSession session,int f_catalog_id,int pageNo,int pageSize,CmCatalogVo cmCatelogVo) {
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		int f_po_id=0;
		if(orgVo!=null && cmCatelogVo.getF_is_public()==0){
			f_po_id=orgVo.getF_po_id();
		}
		List<CmCatalogVo> catalogList = hqjcServiceBean.selectCatalogInfoListByParentCatalogId(f_catalog_id,f_po_id, pageNo, pageSize);
		return catalogList;
	}

	//在前台取内容时，需要对内容归属企业做判定，这里在后台必须明确内容归属企业。当内容想被所有用户看到，
	//则用户归属企业或学校必须为0或者为null。这里不会影响环球+K歌+教育等业务，因为这类业务不会判定用户归属企业。
	/**
	 * 得到某分类下电影或连续剧的总数
	 * @param session
	 * @param f_catalog_id
	 * @return
	 */
	@RequestMapping("/catalog_count")
	@ResponseBody
	public Object catalog_count(HttpSession session,int f_catalog_id,String f_cp_cprid,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		contentVo.setF_sa_id(f_sa_id);
		int f_po_id=0;
		if(orgVo!=null && contentVo.getF_is_public()==0){
			f_po_id=orgVo.getF_po_id();
			contentVo.setF_cc_category(orgVo.getF_po_category());//设置酒店分组 查询用到
		}
		String current_partner = (String)session.getAttribute(SessionKey.SESSION_PARTNER_ID);//当前平台 HW：华为, UT：UT2X, HW3:华为3.0, ZTE：中兴
		if("ZTE".equals(current_partner)){//中兴
			contentVo.setF_cc_interfaceType(2);
		}else {
			contentVo.setF_cc_interfaceType(3);
		}
		int count= hqjcServiceBean.selectContentCount(f_catalog_id,f_po_id,f_cp_cprid,contentVo);
		Map<String, Integer> map=new HashMap<String, Integer>();
		map.put("count", count);
		return map;
	}

	//在前台取内容时，需要对内容归属企业做判定，这里在后台必须明确内容归属企业。当内容想被所有用户看到，
	//则用户归属企业或学校必须为0或者为null。这里不会影响环球+K歌+教育等业务，因为这类业务不会判定用户归属企业。
	/**
	 * 得到某分类下电影或连续剧剧头的列表  搜索功能
	 * @param f_catalog_id
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/catalog_list")
	@ResponseBody
	public Object catalog_list(HttpSession session,int f_catalog_id,int pageNo,int pageSize,String f_cp_cprid,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。

		String current_partner = (String)session.getAttribute(SessionKey.SESSION_PARTNER_ID);//当前平台 HW：华为, UT：UT2X, HW3:华为3.0, ZTE：中兴
		if("ZTE".equals(current_partner)){//中兴
			contentVo.setF_cc_interfaceType(2);
		}else {
			contentVo.setF_cc_interfaceType(3);
		}
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		contentVo.setF_sa_id(f_sa_id);
		int f_po_id=0;
		if(orgVo!=null && contentVo.getF_is_public()==0){
			f_po_id=orgVo.getF_po_id();
			contentVo.setF_cc_category(orgVo.getF_po_category());//设置酒店分组 查询用到
		}
		List<CmContentVo> contentList = hqjcServiceBean.selectContentListByCatalogId(f_catalog_id,f_po_id+"", pageNo, pageSize,f_cp_cprid,contentVo);
		return contentList;
	}
	//在前台取内容时，需要对内容归属企业做判定，这里在后台必须明确内容归属企业。当内容想被所有用户看到，
	//则用户归属企业或学校必须为0或者为null。这里不会影响环球+K歌+教育等业务，因为这类业务不会判定用户归属企业。
	/**
	 * 得到多个分类下电影或连续剧的总数
	 * @param session
	 * @param f_catalog_idd
	 * @return
	 */
	@RequestMapping("/catalog_count_in")
	@ResponseBody
	public Object catalog_count_in(HttpSession session,String f_catalog_idd,String f_cp_cprid,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		contentVo.setF_sa_id(f_sa_id);
		int f_po_id=0;
		if(orgVo!=null && contentVo.getF_is_public()==0){
			f_po_id=orgVo.getF_po_id();
			contentVo.setF_cc_category(orgVo.getF_po_category());//设置酒店分组 查询用到
		}
		String current_partner = (String)session.getAttribute(SessionKey.SESSION_PARTNER_ID);//当前平台 HW：华为, UT：UT2X, HW3:华为3.0, ZTE：中兴
		if("ZTE".equals(current_partner)){//中兴
			contentVo.setF_cc_interfaceType(2);
		}else {
			contentVo.setF_cc_interfaceType(3);
		}
		int count= hqjcServiceBean.selectContentCountIn(f_catalog_idd,f_po_id,f_cp_cprid,contentVo);
		Map<String, Integer> map=new HashMap<String, Integer>();
		map.put("count", count);
		return map;
	}

	//在前台取内容时，需要对内容归属企业做判定，这里在后台必须明确内容归属企业。当内容想被所有用户看到，
	//则用户归属企业或学校必须为0或者为null。这里不会影响环球+K歌+教育等业务，因为这类业务不会判定用户归属企业。
	/**
	 * 得到多个分类下电影或连续剧剧头的列表  搜索功能
	 * @param f_catalog_idd
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/catalog_list_in")
	@ResponseBody
	public Object catalog_list_in(HttpSession session,String f_catalog_idd,int pageNo,int pageSize,String f_cp_cprid,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		String current_partner = (String)session.getAttribute(SessionKey.SESSION_PARTNER_ID);//当前平台 HW：华为, UT：UT2X, HW3:华为3.0, ZTE：中兴
		if("ZTE".equals(current_partner)){//中兴
			contentVo.setF_cc_interfaceType(2);
		}else {
			contentVo.setF_cc_interfaceType(3);
		}
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		contentVo.setF_sa_id(f_sa_id);
		int f_po_id=0;
		if(orgVo!=null && contentVo.getF_is_public()==0){
			f_po_id=orgVo.getF_po_id();
			contentVo.setF_cc_category(orgVo.getF_po_category());//设置酒店分组 查询用到
		}
		List<CmContentVo> contentList = hqjcServiceBean.selectContentListByCatalogIdIn(f_catalog_idd,f_po_id, pageNo, pageSize,f_cp_cprid,contentVo);
		return contentList;
	}
	@RequestMapping("/monitor/catalog_list_gd_toclear")
	public void catalog_list_gd_toclear(HttpServletResponse resp, HttpSession session,CmContentVo contentVo){
		/*Map<String, Object> map=new HashMap<String, Object>();
		resp.setCharacterEncoding("utf-8");
		PrintWriter out =null;
		try {
			CatalogListGdResult = "";
			LOG.debug("清空随动页缓存数据-清空内存中的数据");
			map.put("message", "刷新成功");
			map.put("flag", "1");
		}catch(Exception e){
			map.put("message", "刷新失败");
			map.put("flag", "-1");
		}
		return map;*/
		CatalogListGdResult = "";
		CatalogListGdResultV20 = "";
		LOG.debug("刷新其他机器缓存成功");
	}
	/**
	 * 清空随动页缓存中的数据 private_net_url_172
	 * @param resp
	 * @param session
	 * @param contentVo
	 */
	@RequestMapping("/monitor/catalog_list_gd_clear")
	@ResponseBody
	public Object catalog_list_gd_clear(HttpServletResponse resp,HttpServletRequest request, HttpSession session,CmContentVo contentVo){
		Map<String, Object> map=new HashMap<String, Object>();
		resp.setCharacterEncoding("utf-8");
		PrintWriter out =null;
		try {
			String cookiesValue = "";
//			Cookie[] cookies = request.getCookies();
//			for(int i = 0; i < cookies.length; i++) {
//				//LOG.debug("cookies"+i+"=name="+cookies[i].getName()+"=value="+cookies[i].getValue());
//				if(cookies[i].getName() != null && cookies[i].getName().equals("JSESSIONID")) {
//					cookiesValue = cookies[i].getName()+"="+cookies[i].getValue();
//					break;
//				}
//			}
			Integer readTimeOut = 1000;
			Integer connectTimeout = 1000;

			List<SysConfigVo> sysConfigVos = commonsDao.selectSystemConfig();
			List<SysConfigVo> ipList = new ArrayList<SysConfigVo>();
			for(int i=0;i<sysConfigVos.size();i++) {//筛选后台配置的私网ip地址
				String netkey = sysConfigVos.get(i).getF_sc_key();
				if(netkey.startsWith("private_net_url_")) {
					LOG.debug("要刷新的地址:"+sysConfigVos.get(i).getF_sc_value());
					ipList.add(sysConfigVos.get(i));
				}
			}
			Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
			while (netInterfaces.hasMoreElements()) {
				NetworkInterface ni = netInterfaces.nextElement();
				Enumeration<InetAddress> ips = ni.getInetAddresses();
				while (ips.hasMoreElements()) {
					String adminconfigip = "private_net_url_" /*+ ips.nextElement().getHostAddress()*/; //当有多台服务器时，key不变，在key后加上_ip
					LOG.debug("ip地址="+adminconfigip);
					for(int i=0;i<ipList.size();i++) {
						String netkey = ipList.get(i).getF_sc_key();
						if(netkey.equals(adminconfigip)) {
							ipList.remove(i);
						}
					}
				}
			}
			for(int i=0;i<ipList.size();i++) {
				String neturl = ipList.get(i).getF_sc_value();
				// http://172.24.1.23:9000/web/
				neturl += "monitor/catalog_list_gd_toclear.do";
				try {
					LOG.debug("其他机器的私网地址:"+neturl);
					OrderXmlUtils.sendPost(neturl, readTimeOut, connectTimeout,cookiesValue);
				}catch (Exception e1){
					LOG.error("请求缓存地址失败,地址:"+neturl+";失败原因:",e1);
				}
			}
			CatalogListGdResult = "";
			CatalogListGdResultV20 = "";
			LOG.debug("清空随动页缓存数据-清空内存中的数据");
			map.put("message", "刷新成功");
			map.put("flag", "1");
		}catch(Exception e){
			map.put("message", "刷新失败");
			map.put("flag", "-1");
			LOG.error("刷新随动缓存失败:",e);
		}
		return map;
	}
	/**
	 * 清空随动页缓存中的数据
	 * @param resp
	 * @param session
	 * @param contentVo
	 */
	@RequestMapping("/monitor/catalog_list_gd_clearbak")
	@ResponseBody
	public Object catalog_list_gd_clearbak(HttpServletResponse resp, HttpSession session,CmContentVo contentVo){
		Map<String, Object> map=new HashMap<String, Object>();
		resp.setCharacterEncoding("utf-8");
		PrintWriter out =null;
		try {
			CatalogListGdResult = "";
			CatalogListGdResultV20 = "";
			LOG.debug("清空随动页缓存数据-清空内存中的数据");
			map.put("message", "刷新成功");
			map.put("flag", "1");
		}catch(Exception e){
			map.put("message", "刷新失败");
			map.put("flag", "-1");
		}
		return map;
	}
	/**
	 * 广电3.0推荐位媒资接口
	 * @param platType
	 * @param callback
	 * @param resp
	 * @return void
	 *
	 */
	@RequestMapping("/catalog_list_gd")
	public void catalog_list_gd( HttpServletResponse resp, HttpSession session,String platType,String callback,CmContentVo contentVo){
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		String gd_page_catalog_parentid = SystemConfigUtils.getSysConfig(SessionKey.SESSION_SYSTEM_CONFIG.gd_page_catalog_parentid.getKey());
		resp.setCharacterEncoding("utf-8");
		contentVo.setF_sa_id(f_sa_id);
		contentVo.setF_cc_cprid(ImgType.nr_haibao.getImgType());
		contentVo.setF_ccc_sdStatus(1);
		Map<String, Object> resultMap=new HashMap<String, Object>();
		JSONObject jsonObj = new JSONObject();
		int f_catalog_parentid = Integer.parseInt(gd_page_catalog_parentid);//父分类id
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		String result ="";
		PrintWriter out =null;
		try {
			out = resp.getWriter();
			if(CatalogListGdResult ==null || "null".equals(CatalogListGdResult) || "".equals(CatalogListGdResult) ||
					!CatalogListGdResult.startsWith("jsonp_") || CatalogListGdResult.indexOf("1212200")==-1){ //
				CatalogListGdResult = hqjcServiceBean.catalog_list_gd(f_catalog_parentid ,f_po_id,callback, contentVo);
				LOG.debug("重新读取数据库中的数据:"+CatalogListGdResult);
			}else{
				LOG.debug("读取缓存中的数据:"+CatalogListGdResult);
			}
			result = callback + "(" + CatalogListGdResult + ")";
			out.println(result);
			out.flush();
			out.close();
		}catch(Exception e){
			resultMap.put("retCode", "1212999");
			resultMap.put("retMsg", "系统错误");
			jsonObj.put("result", resultMap);
			jsonObj.put("contents", "");
			result = jsonObj.toJSONString();
			result = callback + "(" + result + ")";
			LOG.error("catalog_list_gd", e);

			try {
				out = resp.getWriter();
			} catch (IOException e1) {
				LOG.error("catalog_list_gd", e);
			}
			if(out!=null){
				out.println(result);
				out.flush();
				out.close();
			}

		}

	}

	/**
	 * 广电2.0推荐位媒资接口 新版随动
	 * @param platType
	 * @param callback
	 * @param resp
	 * @return void
	 *
	 */
	@RequestMapping("/catalog_list_gdv20")
	public void catalog_list_gdv20( HttpServletResponse resp, HttpSession session,String platType,String callback,CmContentVo contentVo){
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		String gd_page_catalog_parentid = SystemConfigUtils.getSysConfig(SessionKey.SESSION_SYSTEM_CONFIG.gd_page_catalog_parentid_v20.getKey());
		resp.setCharacterEncoding("utf-8");
		contentVo.setF_sa_id(f_sa_id);
		contentVo.setF_cc_cprid(ImgType.nr_haibao.getImgType());
		contentVo.setF_ccc_sdStatus(1);
		Map<String, Object> resultMap=new HashMap<String, Object>();
		JSONObject jsonObj = new JSONObject();
		int f_catalog_parentid = Integer.parseInt(gd_page_catalog_parentid);//父分类id
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		String result ="";
		PrintWriter out =null;
		try {
			out = resp.getWriter();
			if(CatalogListGdResultV20 ==null || "null".equals(CatalogListGdResultV20) || "".equals(CatalogListGdResultV20) ||
					!CatalogListGdResultV20.startsWith("jsonp_") || CatalogListGdResultV20.indexOf("1212200")==-1){ //
				CatalogListGdResultV20 = hqjcServiceBean.catalog_list_gd(f_catalog_parentid ,f_po_id,callback, contentVo);
				LOG.debug("重新读取数据库中的数据:"+CatalogListGdResultV20);
			}else{
				LOG.debug("读取缓存中的数据:"+CatalogListGdResultV20);
			}
			result = callback + "(" + CatalogListGdResultV20 + ")";
			out.println(result);
			out.flush();
			out.close();
		}catch(Exception e){
			resultMap.put("retCode", "1212999");
			resultMap.put("retMsg", "系统错误");
			jsonObj.put("result", resultMap);
			jsonObj.put("contents", "");
			result = jsonObj.toJSONString();
			result = callback + "(" + result + ")";
			LOG.error("CatalogListGdResultV20", e);

			try {
				out = resp.getWriter();
			} catch (IOException e1) {
				LOG.error("CatalogListGdResultV20", e);
			}
			if(out!=null){
				out.println(result);
				out.flush();
				out.close();
			}
		}

	}

	/**
	 * 广电3.0推荐位媒资接口-悦生活
	 * @param platType
	 * @param callback
	 * @param resp
	 * @return void
	 *
	 */
	@RequestMapping("/catalog_list_gd_30")
	public void catalog_list_gd_30( HttpServletResponse resp, HttpSession session,String platType,String callback,CmContentVo contentVo){
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		String f_cc_obligate1 = contentVo.getF_cc_obligate1();
		String gd_page_catalog_parentid = SystemConfigUtils.getSysConfig(SessionKey.SESSION_SYSTEM_CONFIG.gd_page_catalog_parentid_30.getKey());
		if(!"".equals(f_cc_obligate1)&&!"null".equals(f_cc_obligate1)&&f_cc_obligate1!=null) {
			gd_page_catalog_parentid = f_cc_obligate1;
		}
		resp.setCharacterEncoding("utf-8");
		contentVo.setF_sa_id(f_sa_id);
		contentVo.setF_cc_cprid(ImgType.nr_haibao.getImgType());
		Map<String, Object> resultMap=new HashMap<String, Object>();
		JSONObject jsonObj = new JSONObject();
		int f_catalog_parentid = Integer.parseInt(gd_page_catalog_parentid);//父分类id
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		String result ="";
		PrintWriter out =null;
		try {
			out = resp.getWriter();
			result = hqjcServiceBean.catalog_list_gd(f_catalog_parentid ,f_po_id,callback, contentVo);
			out.println(result);
			out.flush();
			out.close();
		}catch(Exception e){
			resultMap.put("retCode", "1212999");
			resultMap.put("retMsg", "系统错误");
			jsonObj.put("result", resultMap);
			jsonObj.put("contents", "");
			result = jsonObj.toJSONString();
			result = callback + "(" + result + ")";
			LOG.error("catalog_list_gd", e);

			try {
				out = resp.getWriter();
			} catch (IOException e1) {
				LOG.error("catalog_list_gd", e);
			}
			if(out!=null){
				out.println(result);
				out.flush();
				out.close();
			}

		}

	}
	/**
	 * 广电3.0推荐位媒资接口 zhjt
	 * @param platType
	 * @param callback
	 * @param resp
	 * @return void
	 *
	 */
	@RequestMapping("/catalog_list_gd_zhjt")
	public void catalog_list_gd_zhjt( HttpServletResponse resp, HttpSession session,String platType,String callback,CmContentVo contentVo){
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		String gd_page_catalog_parentid = SystemConfigUtils.getSysConfig(SessionKey.SESSION_SYSTEM_CONFIG.gd_zhjt_page_catalog_parentid.getKey());
		resp.setCharacterEncoding("utf-8");
		contentVo.setF_sa_id(f_sa_id);
		contentVo.setF_cc_cprid(ImgType.nr_haibao.getImgType());
		Map<String, Object> resultMap=new HashMap<String, Object>();
		JSONObject jsonObj = new JSONObject();
		int f_catalog_parentid = Integer.parseInt(gd_page_catalog_parentid);//父分类id
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		String result ="";
		PrintWriter out =null;
		try {
			out = resp.getWriter();
			result = hqjcServiceBean.catalog_list_gd(f_catalog_parentid ,f_po_id,callback, contentVo);
			out.println(result);
			out.flush();
			out.close();
		}catch(Exception e){
			resultMap.put("retCode", "1212999");
			resultMap.put("retMsg", "系统错误");
			jsonObj.put("result", resultMap);
			jsonObj.put("contents", "");
			result = jsonObj.toJSONString();
			result = callback + "(" + result + ")";
			LOG.error("catalog_list_gd_zhjt", e);

			try {
				out = resp.getWriter();
			} catch (IOException e1) {
				LOG.error("catalog_list_gd_zhjt", e);
			}
			if(out!=null){
				out.println(result);
				out.flush();
				out.close();
			}

		}

	}
	/**
	 * 得到某分类下电影或连续剧剧头的列表  搜索功能 传入地区的组织id
	 * @param f_catalog_id
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/catalog_list_org")
	@ResponseBody
	public Object catalog_list_org(HttpSession session,int f_catalog_id,String f_po_id,int pageNo,int pageSize,String f_cp_cprid,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		String current_partner = (String)session.getAttribute(SessionKey.SESSION_PARTNER_ID);//当前平台 HW：华为, UT：UT2X, HW3:华为3.0, ZTE：中兴
		if("ZTE".equals(current_partner)){//中兴
			contentVo.setF_cc_interfaceType(2);
		}else {
			contentVo.setF_cc_interfaceType(3);
		}
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		if(orgVo!=null){
			contentVo.setF_cc_category(orgVo.getF_po_category());//设置酒店分组 查询用到
		}
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		contentVo.setF_sa_id(f_sa_id);
		List<CmContentVo> contentList = hqjcServiceBean.selectContentListByCatalogId(f_catalog_id,f_po_id, pageNo, pageSize,f_cp_cprid,contentVo);
		return contentList;
	}

	/**
	 * 拿到某个分类下的连续剧清单，通过这条SQL语句可以拿到连续剧最近更新到第几集，图片类型为2剧照
	 * @param f_catalog_id
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/catalog")
	@ResponseBody
	public Object selectSeriesListByCatalogId(int f_catalog_id,int pageNo,int pageSize) {
		// 内容id 内容类型 内容名称 内容图片
		List<CmContentVo> contentList= hqjcServiceBean.selectSeriesListByCatalogId(f_catalog_id,pageNo,pageSize);
		return contentList;
	}

	/**
	 * 拿到某个电影或者连续剧剧头的详细内容，并且关联图片类型为5的内容详情图
	 * 2018-08-20:dpf: 因行业应用项目在取内容详情时，只能取到一张5的内容详情图，无法满足需求，修改为可取多张图片
	 * @param contentVo f_cc_id
	 * @param contentVo f_cc_cprid
	 * @return
	 */
	@RequestMapping("/content")
	@ResponseBody
	public Object selectContent(CmContentVo contentVo) {
		CmContentVo content= hqjcServiceBean.selectContent(contentVo);
		if (content == null) {
			return new CmContentVo();
		}
		return content;
	}

	/**
	 * 得到连续剧总共有几集
	 * @param contentVo f_cc_id
	 * @return
	 */
	@RequestMapping("/selectSeriesCount")
	@ResponseBody
	public Object selectSeriesCount(CmContentVo contentVo) {
		int count= hqjcServiceBean.selectSeriesCount(contentVo);
		Map<String, Integer> map=new HashMap<String, Integer>();
		map.put("count", count);
		return map;
	}

	/**
	 * 根据剧头拿到连接剧播放CODE列表
	 * @param f_cc_id
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/selectSeriesList")
	@ResponseBody
	public Object selectSeriesListByContentId(int f_cc_id,int pageNo,int pageSize) {
		List<CmSeriesVo> seriesList= hqjcServiceBean.selectSeriesList(f_cc_id,pageNo,pageSize);
		return seriesList;
	}

	/**
	 * 根据剧集ID拿到连接剧其中一集的播放CODE
	 * @param f_ssc_id
	 * @return
	 */
	@RequestMapping("/selectSeries")
	@ResponseBody
	public Object selectSeriesBySerieId(int f_ssc_id) {
		CmSeriesVo series= hqjcServiceBean.selectSeries(f_ssc_id);
		return series;
	}

	/**
	 * 得到连续剧剧头、连续剧总集数、连续剧播放CODE列表
	 * @param contentVo f_cc_id
	 * @return
	 */
	@RequestMapping("/selectSeriesInfo")
	@ResponseBody
	public Object selectSeriesInfo(CmContentVo contentVo) {
		Map<String,Object> map = new HashMap<String, Object>();
		map = hqjcServiceBean.selectSeriesInfo(contentVo);
		return map;
	}

	/**
	 * 根据剧头code拿到内容id，epg最新上线、电视剧跳转详情页只能传剧头code
	 * @param f_cc_code
	 * @return
	 */
	@RequestMapping("/selectContentIDByCode")
	@ResponseBody
	public Object selectContentIDByCode(String f_cc_code) {
		int f_cc_id= hqjcServiceBean.selectContentIDByCode(f_cc_code);
		Map<String, Integer> map=new HashMap<String, Integer>();
		map.put("f_cc_id", f_cc_id);
		return map;
	}


	/**
	 * 得到某分类下电影或连续剧剧头的人气排行列表
	 * @param f_catalog_id
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/catalog_list_rqph")
	@ResponseBody
	public Object catalog_list_rqph(HttpSession session,int f_catalog_id,int pageNo,int pageSize,String f_cp_cprid,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		contentVo.setF_sa_id(f_sa_id);
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		List<CmContentVo> contentList = hqjcServiceBean.selectContentListByCatalogIdRqph(f_catalog_id,f_po_id, pageNo, pageSize,f_cp_cprid,contentVo);
		return contentList;
	}

	/**
	 * 全数据库搜索内容，目前暂未对业务进行区分，后续可指定产品清单进行搜索，这样就能区分业务，比如在环球中只搜索环球的内容
	 * @param session
	 * @param contentVo
	 * @return
	 */
	@RequestMapping("/selectGlobalContentListCount")
	@ResponseBody
	public Object selectGlobalContentListCount(HttpSession session,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		int count = hqjcServiceBean.selectGlobalContentListCount(f_po_id+"", contentVo);
		Map<String, Integer> map=new HashMap<String, Integer>();
		map.put("count", count);
		return map;
	}

	/**
	 * 全数据库搜索内容，目前暂未对业务进行区分，后续可指定产品清单进行搜索，这样就能区分业务，比如在环球中只搜索环球的内容
	 * @param session
	 * @param contentVo
	 * @return
	 */
	@RequestMapping("/selectGlobalContentList")
	@ResponseBody
	public Object selectGlobalContentList(HttpSession session,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		List<CmContentVo> contentList = hqjcServiceBean.selectGlobalContentList(f_po_id+"", contentVo);
		if(contentList == null)
			contentList = new ArrayList<CmContentVo>();
		return contentList;
	}


	/**
	 * 全数据库搜索内容，目前暂未对业务进行区分，查询演员对应的内容
	 * @param session
	 * @param contentVo
	 * @return
	 */
	@RequestMapping("/selectGlobalContentListByActorSearchName")
	@ResponseBody
	public Object selectGlobalContentListByActorSearchName(HttpSession session,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		List<CmContentVo> contentList = hqjcServiceBean.selectGlobalContentListByActorSearchName(f_po_id+"", contentVo);
		if(contentList == null)
			contentList = new ArrayList<CmContentVo>();
		return contentList;
	}



	/**
	 * 查询内容对应的分类列表 f_sp_id代表需要去除的产品包id
	 * @param session
	 * @param contentVo
	 * @return
	 */
	@RequestMapping("/selectCatalogListByContent")
	@ResponseBody
	public Object selectCatalogListByContent(HttpSession session,CmContentVo contentVo) {
		List<CmCatalogVo> catalogList = hqjcServiceBean.selectCatalogListByContent(contentVo);
		if(catalogList == null)
			catalogList = new ArrayList<CmCatalogVo>();
		return catalogList;
	}

	/**
	 * 全数据库搜索内容，目前暂未对业务进行区分，通过关键字查找内容
	 * @param session
	 * @param contentVo
	 * @return
	 */
	@RequestMapping("/selectGlobalContentListByTags")
	@ResponseBody
	public Object selectGlobalContentListByTags(HttpSession session,CmContentVo contentVo) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		int f_po_id=0;
		if(orgVo!=null){
			f_po_id=orgVo.getF_po_id();
		}
		List<CmContentVo> contentList = hqjcServiceBean.selectGlobalContentListBytags(f_po_id+"", contentVo);
		if(contentList == null)
			contentList = new ArrayList<CmContentVo>();
		return contentList;
	}

	/**
	 * 根据子目录catalogId得到父级目录信息
	 * @param session
	 * @param f_cc_id
	 * @return
	 */
	@RequestMapping("/catalog_parent_by_content_id")
	@ResponseBody
	public Object selectParentCatalogById(HttpSession session,int f_cc_id) {
		CmCatalogVo catalogVo =  hqjcServiceBean.selectParentCatalogById(f_cc_id);
		if(catalogVo == null){
			catalogVo = new CmCatalogVo();
		}
		return catalogVo;
	}

	@RequestMapping("/selectIdsByOrgParentId")
	@ResponseBody
	public Object selectIdsByOrgParentId(PmsOrgVo pmsOrgVo) {
		String ids = hqjcServiceBean.selectIdsByOrgParentId(pmsOrgVo);
		return ids;
	}

	/*@RequestMapping("/requestInterfaceData")
	@ResponseBody
	public Object requestInterfaceData(OnlineClassRoomParamsVo vo){
		LOG.debug("参数："+vo.getParams());
		Object res = hqjcServiceBean.requestInterfaceData(vo);
		return res;
	}
*/
	/*
	地市信息将由组织表里的f_po_show_region字段
	 */
	@RequestMapping("/catalog_list_by_org_show_region")
	@ResponseBody
	public Object catalog_list_by_org_show_region(HttpSession session,int f_catalog_id,int pageNo,int pageSize,String f_cp_cprid,CmContentVo contentVo,int f_po_id) {
		//这里需要实现从session中获取用户归属企业，这个逻辑只针对酒店行业应用+学校行业应用起作用，不对怀球剧场+教育+K歌这类增值业务起作用。
		String current_partner = (String)session.getAttribute(SessionKey.SESSION_PARTNER_ID);//当前平台 HW：华为, UT：UT2X, HW3:华为3.0, ZTE：中兴
		if("ZTE".equals(current_partner)){//中兴
			contentVo.setF_cc_interfaceType(2);
		}else {
			contentVo.setF_cc_interfaceType(3);
		}
		PmsOrgVo orgVo=(PmsOrgVo) session.getAttribute(SessionKey.SESSION_USER_FOR_ORG_INFO);
		String f_sa_id = String.valueOf(session.getAttribute(SessionKey.SESSION_AREA));
		if(StringUtils.isNotEmpty(orgVo.getF_po_show_region())){//根据组织选择的策略展示对应地市内容
			if("gd".equals(orgVo.getF_po_show_region())){
				f_sa_id = SystemConfigUtils.getSysConfig("gd_representative_cities");
			}else if("bst".equals(orgVo.getF_po_show_region())){
				f_sa_id = SystemConfigUtils.getSysConfig("bst_representative_cities");
			}
		}
		contentVo.setF_sa_id(f_sa_id);
		if(orgVo!=null){
			contentVo.setF_cc_category(orgVo.getF_po_category());//设置酒店分组 查询用到
		}
		if(orgVo!=null && contentVo.getF_is_public()==0&&f_po_id==0){
			f_po_id=orgVo.getF_po_id();
			contentVo.setF_cc_category(orgVo.getF_po_category());//设置酒店分组 查询用到
		}
		List<CmContentVo> contentList = hqjcServiceBean.selectContentListByCatalogId(f_catalog_id,f_po_id+"", pageNo, pageSize,f_cp_cprid,contentVo);
		return contentList;
	}
}
